<?php

require_once '../application/business/ClientBusiness.php';

class ClientValidator {


	public function newClientValid($form, $address){
		$clientBusiness = new ClientBusiness();


		$birth = explode('/', $form['birth']);

		if(empty($form['name'])){
			$errorMessages['name'] = 'Nome obrigatório.';
		}
		if(strlen($form['name']) > 65){
			$errorMessages['name'] = 'Máximo 65 caracteres';
		}
		if(empty($form['cpf'])){
			$errorMessages['cpf'] = 'CPF obrigatório';
		}
		if(empty($form['birth'])){
			$errorMessages['birth'] = 'Data de Nascimento obrigatória';
		}
		if(empty($form['sex']) || $form['sex'] == null){
			$errorMessages['sex'] = 'Sexo obrigatório.';
		}
		if(empty($form['phone'])){
			$errorMessages['phone'] = 'Telefone obrigatório.';
		}
		if(strlen($form['phone']) > 14){
			$errorMessages['phone'] = 'Telefone inválido';
		}
		if(strlen($form['cel']) > 14){
			$errorMessages['cel'] = 'Celular inválido';
		}
		if(empty($form['email'])){
			$errorMessages['email'] = 'Email obrgatório';
		}
		if(strlen($form['email']) > 65){
			$errorMessages['email'] = 'Máximo 65 caracteres';
		}
		if(empty($form['login'])){
			$errorMessages['login'] = 'Login obrgatório';
		}
		if(strlen($form['login']) > 15){
			$errorMessages['login'] = 'Máximo 15 caracteres';
		}
		if(strlen($form['password']) > 15){
			$errorMessages['password'] = 'Máximo 15 caracteres';
		}
		if(strlen($form['password']) < 6){
			$errorMessages['password'] = 'Mínimo 6 caracteres';
		}
		if(empty($form['password'])){
			$errorMessages['password'] = 'Senha obrgatório';
		}
		if(strlen($form['confirm']) > 15){
			$errorMessages['confirm'] = 'Máximo 15 caracteres';
		}
		if(strlen($form['confirm']) < 6){
			$errorMessages['confirm'] = 'Mínimo 6 caracteres';
		}
		if(empty($form['confirm'])){
			$errorMessages['confirm'] = 'Confirmação obrgatório';
		}
		if($form['confirm'] != $form['password']){
			$errorMessages['confirm'] = 'Senha não confirma';
		}

		if(empty($address['zipcode'])){
			$errorMessages['zipcode'] = 'Cep obrigatório';
		}

		if(strlen($address['zipcode']) > 11){
			$errorMessages['zipcode'] = 'Máximo 11 caracteres';
		}

		if(empty($address['address'])){
			$errorMessages['address'] = 'Endereço obrigatório';
		}

		if(strlen($address['zipcode']) > 11){
			$errorMessages['zipcode'] = 'Máximo 11 caracteres';
		}

		if(empty($address['number'])){
			$errorMessages['number'] = 'Número obrigatório';
		}

		if(strlen($address['number']) > 5){
			$errorMessages['number'] = 'Máximo 5 caracteres';
		}

		if(strlen($address['comp']) > 45){
			$errorMessages['comp'] = 'Máximo 45 caracteres';
		}

		if(strlen($address['ref']) > 45){
			$errorMessages['ref'] = 'Máximo 45 caracteres';
		}

		if(empty($address['neighborhood'])){
			$errorMessages['neighborhood'] = 'Bairro obrigatório';
		}

		if(strlen($address['neighborhood']) > 65){
			$errorMessages['neighborhood'] = 'Máximo 65 caracteres';
		}

		if(empty($address['city'])){
			$errorMessages['city'] = 'Cidade obrigatório';
		}

		if(strlen($address['city']) > 65){
			$errorMessages['city'] = 'Máximo 65 caracteres';
		}

		if(empty($address['state'])){
			$errorMessages['state'] = 'Estado obrigatório';
		}

		if(strlen($address['state']) > 65){
			$errorMessages['state'] = 'Máximo 65 caracteres';
		}

		if(empty($address['country'])){
			$errorMessages['country'] = 'País obrigatório';
		}

		if(strlen($address['country']) > 65){
			$errorMessages['country'] = 'Máximo 65 caracteres';
		}

		if(empty($address['type']) || $address['type'] == null){
			$errorMessages['type'] = 'Tipo de Moradia obrigatória';
		}

		if(!empty($form['login']) && $form['login'] != null){
			$existUser = $clientBusiness->getUserByLogin($form['login']);

			if($existUser){
				$this->view->form = $form;
				$this->view->address = $address;
				$errorMessages['login'] = 'Login já cadastrado no sistema.';
			}
		}

		if(!empty($form['email']) && $form['email'] != null){
			$existUser = $clientBusiness->getUserByEmail($form['email']);

			if($existUser != null){
				$this->view->form = $form;
				$this->view->address = $address;
				$errorMessages['email'] = "Email já cadastrado no sistema.";
			}
		}

		if(!empty($form['cpf']) && $form['cpf'] != null){
			$existUser = $clientBusiness->getUserByCpfOtherId($form);

			if($existUser){
				$this->view->form = $form;
				$this->view->address = $address;
				$errorMessages['cpf'] = 'CPF já cadastrado no sistema.';
			}
		}

		return $errorMessages;

	}

	public function alterLoginValidator($form){
		$clientBusiness = new ClientBusiness();

		$errorMessages = array();
			
		if(empty($form['email'])){
			$errorMessages['email'] = 'Email obrigatório';
		}
		if(strlen($form['email']) > 65){
			$errorMessages['email'] = 'Máximo 65 caracteres';
		}

		$existUser = $clientBusiness->getUserByEmailOtherId($form);
		if($existUser != null){
			$errorMessages['email'] = "Email já cadastrado no sistema.";
		}

		if(empty($form['login'])){
			$errorMessages['login'] = 'Login obrigatório';
		}
		if(strlen($form['login']) > 15){
			$errorMessages['login'] = 'Máximo 15 caracteres';
		}

		$existUser = $clientBusiness->getUserByLoginOtherId($form);
		if($existUser){
			$errorMessages['login'] = 'Login já cadastrado no sistema.';
		}

		return $errorMessages;
	}

	public function alterClientValidator($form){

		$errorMessages = array();

		$clientBusiness = new ClientBusiness();

		$birth = explode('/', $form['birth']);

		if(empty($form['name'])){
			$errorMessages['name'] = 'Nome obrigatório.';
		}
		if(strlen($form['name']) > 65){
			$errorMessages['name'] = 'Máximo 65 caracteres';
		}
		if(empty($form['cpf'])){
			$errorMessages['cpf'] = 'CPF obrigatório';
		}

		$existUser = $clientBusiness->getUserByCpfOtherId($form);
		if($existUser){
			$errorMessages['cpf'] = 'CPF já cadastrado no sistema.';

		}


		if(empty($form['birth'])){
			$errorMessages['birth'] = 'Data de Nascimento obrigatória';
		}
		if(empty($form['sex']) || $form['sex'] == null){
			$errorMessages['sex'] = 'Sexo obrigatório.';
		}
		if(empty($form['phone'])){
			$errorMessages['phone'] = 'Telefone obrigatório.';
		}
		if(strlen($form['phone']) > 14){
			$errorMessages['phone'] = 'Telefone inválido';
		}
		if(strlen($form['cel']) > 14){
			$errorMessages['cel'] = 'Celular inválido';
		}

		return $errorMessages;
	}

	public function alterAddresValidator($address){

		$errorMessages = array();

		if(empty($address['zipcode'])){
			$errorMessages['zipcode'] = 'Cep obrigatório';
		}

		if(strlen($address['zipcode']) > 11){
			$errorMessages['zipcode'] = 'Máximo 11 caracteres';
		}

		if(empty($address['address'])){
			$errorMessages['address'] = 'Endereço obrigatório';
		}

		if(strlen($address['zipcode']) > 11){
			$errorMessages['zipcode'] = 'Máximo 11 caracteres';
		}

		if(empty($address['number'])){
			$errorMessages['number'] = 'Número obrigatório';
		}

		if(strlen($address['number']) > 5){
			$errorMessages['number'] = 'Máximo 5 caracteres';
		}

		if(strlen($address['comp']) > 45){
			$errorMessages['comp'] = 'Máximo 45 caracteres';
		}

		if(strlen($address['ref']) > 45){
			$errorMessages['ref'] = 'Máximo 45 caracteres';
		}

		if(empty($address['neighborhood'])){
			$errorMessages['neighborhood'] = 'Bairro obrigatório';
		}

		if(strlen($address['neighborhood']) > 65){
			$errorMessages['neighborhood'] = 'Máximo 65 caracteres';
		}

		if(empty($address['city'])){
			$errorMessages['city'] = 'Cidade obrigatório';
		}

		if(strlen($address['city']) > 65){
			$errorMessages['city'] = 'Máximo 65 caracteres';
		}

		if(empty($address['state'])){
			$errorMessages['state'] = 'Estado obrigatório';
		}

		if(strlen($address['state']) > 65){
			$errorMessages['state'] = 'Máximo 65 caracteres';
		}

		if(empty($address['country'])){
			$errorMessages['country'] = 'País obrigatório';
		}

		if(strlen($address['country']) > 65){
			$errorMessages['country'] = 'Máximo 65 caracteres';
		}

		if(empty($address['type']) || $address['type'] == null){
			$errorMessages['type'] = 'Tipo de Moradia obrigatória';
		}

		return $errorMessages;
	}

	public function passValidator($data){

		$errorMessages = array();
		
		$clientBusiness = new ClientBusiness();

		$user = $clientBusiness->getUserByid($data['userId']);

		if(md5($data['old']) != $user['password']){
			$errorMessages['old'] = 'Senha incorreta';
		}
		if(strlen($data['old']) > 15){
			$errorMessages['old'] = 'Máximo 15 caracteres';
		}
		if(strlen($data['old']) < 6){
			$errorMessages['old'] = 'Mínimo 6 caracteres';
		}
		if(empty($data['old'])){
			$errorMessages['old'] = 'Senha Antiga obrigatória';
		}

		if(strlen($data['new']) > 15){
			$errorMessages['new'] = 'Máximo 15 caracteres';
		}
		if(strlen($data['new']) < 6){
			$errorMessages['new'] = 'Mínimo 6 caracteres';
		}
		if(empty($data['new'])){
			$errorMessages['new'] = 'Nova Senha obrigatória';
		}
		if(strlen($data['confirm']) > 15){
			$errorMessages['confirm'] = 'Máximo 15 caracteres';
		}
		if(strlen($data['confirm']) < 6){
			$errorMessages['confirm'] = 'Mínimo 6 caracteres';
		}
		if(empty($data['confirm'])){
			$errorMessages['confirm'] = 'Confirmação obrigatório';
		}
		if($data['confirm'] != $data['new']){
			$errorMessages['confirm'] = 'Senha não confirma';
		}

		return $errorMessages;
	}

}